package equals_hashCode;

import com.sun.org.apache.xpath.internal.operations.String;

import java.util.Objects;

/**
 * @author zxc
 * @date 2023/04/02 22:36
 **/
// 重写Person类的equals方法和hashCode方法
public class Person {
    private String sno;
    private String sName;

    // 重写当前类的equals方法 ：
    @Override
    public boolean equals(Object obj){
        // 两个对象是同一个对象的情况 ：
        if(this == obj){
            return true;
        }
        // 所传入的对象不属于当前类（Person） ：
        /**
         * obj instanceof Class
         * ===>
         * 即，判断obj对象是否属于Class类;
         */
        if(!(obj instanceof Person)){
            return false;
        }
        // 所传入的对象obj，必然是属于当前类的（Person）;
        Person person = (Person) obj;
        // 判断 this对象和所传入对象person中内容是否相同;
        // ===》
        // 调用Objects.equals(this.属性 , person.属性),来判断this对象和person对象中内容是否相同;
        return Objects.equals(this.sno , person.sno) && Objects.equals(this.sName , person.sName);
    }

    // 重写当前类的hashCode方法 ：
    @Override
    public int hashCode(){
        // 若是不去重写hashCode方法的话，则hashCode方法所返回的，就是将当前对象的内存地址转化为整数（哈希值），进行返回;
        // 返回 变量sno和sName共同计算出的hashcode值;
        return Objects.hash(sno , sName);
    }
}
